home *** CD-ROM | disk | FTP | other *** search
- unit TestRig;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, FlexiSort, TypInfo, Grids, ExtCtrls;
-
- type
- TTestClass = class(TRTTIObject)
- private
- FPStr: String;
- FPInt: Integer;
- FPBool: Boolean;
- FPCurr: Currency;
- FPDateTime: TDateTime;
- published
- property PStr: String read FPStr write FPStr;
- property PInt: Integer read FPInt write FPInt;
- property PBool: Boolean read FPBool write FPBool;
- property PCurr: Currency read FPCurr write FPCurr;
- property PDateTime: TDateTime read FPDateTime write FPDateTime;
- end;
-
- TfrmTestRig = class(TForm)
- Panel1: TPanel;
- grdG: TStringGrid;
- bSort0: TButton;
- bSort1: TButton;
- bSort2: TButton;
- bSort3: TButton;
- bSort4: TButton;
- procedure FormShow(Sender: TObject);
- procedure bSort0Click(Sender: TObject);
- procedure bSort1Click(Sender: TObject);
- procedure bSort2Click(Sender: TObject);
- procedure bSort3Click(Sender: TObject);
- procedure bSort4Click(Sender: TObject);
- private
- FSL: TFlexiSortList;
- procedure LoadGrid;
- public
- end;
-
- var
- frmTestRig: TfrmTestRig;
-
- implementation
-
- {$R *.DFM}
-
- const
- ROW_COUNT = 100;
-
- procedure TfrmTestRig.bSort0Click(Sender: TObject);
- begin
- FSL.Sort(['PCurr']);
- LoadGrid;
- end;
-
- procedure TfrmTestRig.bSort1Click(Sender: TObject);
- begin
- FSL.Sort(['A:PInt', 'D:PDateTime']);
- LoadGrid;
- end;
-
- procedure TfrmTestRig.bSort2Click(Sender: TObject);
- begin
- FSL.Sort(['D:PBool', 'PStr']);
- LoadGrid;
- end;
-
- procedure TfrmTestRig.bSort3Click(Sender: TObject);
- begin
- FSL.Sort(['PInt', 'D:PStr']);
- LoadGrid;
- end;
-
- procedure TfrmTestRig.bSort4Click(Sender: TObject);
- begin
- FSL.Sort(['A:PInt', 'A:PBool', 'A:PCurr']);
- LoadGrid;
- end;
-
- procedure TfrmTestRig.FormShow(Sender: TObject);
- var
- I: Integer;
- TC: TTestClass;
- function GenString: String;
- var
- I: Integer;
- begin
- Result := ' ';
- for I := 1 to 5 do
- begin
- Result[I] := Char(Random(26) + Ord('A'));
- end;
- end;
- begin
- FSL := TFlexiSortList.Create(TTestClass);
- grdG.Cells[0, 0] := 'A String';
- grdG.Cells[1, 0] := 'An Int';
- grdG.Cells[2, 0] := 'A Bool';
- grdG.Cells[3, 0] := 'A Curr';
- grdG.Cells[4, 0] := 'A DateTime';
- for I := 0 to (ROW_COUNT - 1) do
- begin
- TC := TTestClass.Create;
- TC.PStr := GenString;
- TC.PInt := Random(5);
- TC.PBool := Odd(I);
- TC.PCurr := Round(Random * 10000.0) / 100.0;
- TC.PDateTime := Now + I + Random;
- FSL.Add(TC);
- end;
- LoadGrid;
- end;
-
- procedure TfrmTestRig.LoadGrid;
- var
- I: Integer;
- TC: TTestClass;
- begin
- grdG.RowCount := ROW_COUNT + 1;
- for I := 1 to ROW_COUNT do
- begin
- TC := TTestClass(FSL[I - 1]);
- grdG.Cells[0, I] := TC.PStr;
- grdG.Cells[1, I] := IntToStr(TC.PInt);
- if TC.PBool then
- grdG.Cells[2, I] := 'True'
- else
- grdG.Cells[2, I] := 'False';
- grdG.Cells[3, I] := CurrToStr(TC.PCurr);
- grdG.Cells[4, I] := DateTimeToStr(TC.PDateTime);
- end;
- end;
-
- end.
-